package com.cskaoyan.javase.basic._7flow._2loop;

/**
 * @description: 循环结构
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

import jdk.nashorn.internal.ir.WhileNode;

/**
 * for(初始化语句 ; 条件判断语句(布尔表达式); 循环控制语句) {
 *   //循环体语句
 * }
 *
 * 初始化语句往往用于初始化循环控制变量,用于结束循环的
 * 布尔表达式用于表示循环结束的条件
 * 循环控制语句用于决定循环的次数,控制循环能够结束
 *
 * 注意事项:
 *      1.循环控制变量一般使用i,j,k
 *      2.循环当中定义的变量包括循环控制变量都是局部变量
 *      3.循环体语句如果只有一条,那么可以省略大括号
 *      4,for循环当中的结构都是可以省略的,但是两个";"是不能省略的
 *      5.for循环的死循环形式: 省略布尔表达式,也可以省略控制语句
 *      6.循环是可以嵌套的,称之为嵌套循环
 *          打印星号,打印矩形,打印菱形
 *        嵌套循环在实际开发中应用不多,嵌套for主要用来锻炼逻辑思维能力
 *
 *
 */
public class Demo {
    public static void main(String[] args) {
        for (int i = 0; i < 5; i++) {
            System.out.println("hello");
        }
        for (int i = 0; i < 10; i++) System.out.println("我很聪明~");

        /*for (;;){
            System.out.println("6666666");
        }*/

        //打印三行六列的"#"
        //在打印矩形时,嵌套for,外层控制行数,内层控制列数
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 6; j++) {
                System.out.print("#");
            }
            System.out.println();
        }

        /**
         * 珠峰的高度是8848m，假设有一张足够大可折叠的纸张，初始厚度是0.01m，
         * - 求解这张纸折叠多少次，纸张的厚度开始超过珠峰？
         *
         * 需要一个计数器,来记录循环的次数,就是折叠的次数
         */
        double thickness = 0.01;
        //定义计数器指示折叠的次数
        int count = 0;
        while (thickness < 8848) {
            //循环一次,折叠一次
            thickness *= 2;
            count++;
        }
        System.out.println(count);

        int count2 = 0;
        //用for循环等价改造
        for (double len = 0.01; len < 8848; len *= 2) {
            count2++;
        }
        System.out.println(count2);

        //while (true){} 死循环

        int flag = 3;
        do {
            System.out.println("我是do..while");
            flag--;
        } while (flag > 0);

    }
}
